package com.artazapedidos.service;

import com.artazapedidos.dao.*;
//import com.google.appengine.api.datastore.Key;
import com.artazapedidos.persistence.*;
//import java.util.*;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.stereotype.Service;

@Service
public class PedidoServiceImpl implements PedidoService {

    PedidoDAO pedidoDAO;
    ProductoDAO productoDAO;
    FormadoDAO formadoDAO;
    UsuarioDAO usuarioDAO;
    RolDAO rolDAO;
    MensajeDAO mensajeDAO;
    UsuarioService usuarioservice;

    @Autowired
    @Required
    public void setUsuarioservice(final UsuarioService usuarioservice) {
        this.usuarioservice = usuarioservice;
    }

    @Autowired
    @Required
    public void setMensajeDAO(final MensajeDAO mensajeDAO) {
        this.mensajeDAO = mensajeDAO;
    }

    @Autowired
    @Required
    public void setPedidoDAO(final PedidoDAO pedidoDAO) {
        this.pedidoDAO = pedidoDAO;
    }

    @Override
    public void crearPedido(Pedido pedido) {
        this.pedidoDAO.insert(pedido);
    }

    @Autowired
    @Required
    public void setProductoDAO(final ProductoDAO pedidoDAO) {
        this.productoDAO = pedidoDAO;
    }

    @Autowired
    @Required
    public void setFormadoDAO(final FormadoDAO pedidoDAO) {
        this.formadoDAO = pedidoDAO;
    }

    @Autowired
    @Required
    public void setUsuarioDAO(final UsuarioDAO pedidoDAO) {
        this.usuarioDAO = pedidoDAO;
    }

    @Autowired
    @Required
    public void setRolDAO(final RolDAO pedidoDAO) {
        this.rolDAO = pedidoDAO;
    }

    @PostConstruct
    @Override
    public void preload_pedidos() {
        System.out.println("AQUI PedidoServiceImpl preload_pedidos");
        pedidoDAO.removeAll(Pedido.class);
        productoDAO.removeAll(Producto.class);
        formadoDAO.removeAll(Formado.class);
        usuarioDAO.removeAll(Usuario.class);
        rolDAO.removeAll(Rol.class);
        mensajeDAO.removeAll(Mensaje.class);

        Producto producto = new Producto();
        producto.setNombre("Calamares");
        producto.setPrecio(4.40);
        producto.setTipo("comida");
        productoDAO.insert(producto);

        Mensaje m1 = new Mensaje();
        m1.setCorreo("grr@gmail.com");
        m1.setNombre("guille");
        mensajeDAO.insert(m1);

        Usuario u1 = new Usuario();
        u1.setUsername("pepe");
        u1.setPassword("pepe");
        u1.setEs_admin(true);

        Rol r1 = new Rol();
        r1.setNombre("ROLE_ADMIN");

        Rol r2 = new Rol();
        r2.setNombre("ROLE_USER");

        rolDAO.insert(r1);
        rolDAO.insert(r2);
        usuarioservice.addRol(u1, r1);
        usuarioservice.addRol(u1, r2);


        usuarioDAO.insert(u1);


        Pedido p1 = new Pedido();
        p1.setPrecio(0);
        p1.setFecha_pedido("12/12/2012");
        pedidoDAO.insert(p1);


        Formado f2 = new Formado();
        f2.setProducto(producto.getId_producto());
        //formadoDAO.insert(f2);
        Pedido p2 = new Pedido();
        p2.setPrecio(0);
        p2.setFecha_pedido("11/11/2013");
        p2.getContenido().add(f2);
        pedidoDAO.insert(p2);

        Formado f = new Formado(p2);
        formadoDAO.insert(f);

        System.out.println("PedidoServiceImpl preload_pedidos=" + pedidoDAO.countAll(Pedido.class));
        System.out.println("PedidoServiceImpl preload_mensaje=" + mensajeDAO.countAll(Mensaje.class));
    }


    @Override
    public void update(Pedido p) {
        pedidoDAO.update(p);
    }
}
